]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
extensionBase: Use UUID as fallback gettext domain
authorFlorian Müllner <fmuellner@gnome.org>
Fri, 11 Aug 2023 22:03:38 +0000 (00:03 +0200)
committerMarge Bot <marge-bot@gnome.org>
Tue, 29 Aug 2023 21:21:51 +0000 (21:21 +0000)
Nowadays we can set up translations automatically, but only when
the domain is provided with the metadata.

This can be a problem, for example our extension templates use
the automatic translation handling that we recommend, but as a
result the code will throw an error unless `gettext-domain` is
added to the metadata.

Binding a text domain is cheap enough to not care about unnecessary
or duplicated calls, so add a final fallback to the UUID when no
domain was provided as parameter or in the metadata.

There is already a precedent with the `gnome-extensions pack` command
that falls back to the UUID when no explicit gettext domain was
included in the metadata.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2888>

js/extensions/sharedInternals.js

index c9cb8e9c8e502710c01288d5d8cceb15ab7bd8bf..1e3ac6dba919ee02ffcb29740adcef17fea2772f 100644 (file)
@@ -55,10 +55,7 @@ export class ExtensionBase {
             throw new Error(`${this.constructor.name} did not pass metadata to parent`);
 
         this.metadata = metadata;
-
-        const domain = this.metadata['gettext-domain'];
-        if (domain)
-            this.initTranslations(domain);
+        this.initTranslations();
     }
 
     /**
@@ -116,14 +113,12 @@ export class ExtensionBase {
     /**
      * Initialize Gettext to load translations from extensionsdir/locale. If
      * domain is not provided, it will be taken from metadata['gettext-domain']
+     * if provided, or use the UUID
      *
      * @param {string=} domain - the gettext domain to use
      */
     initTranslations(domain) {
-        domain ||= this.metadata['gettext-domain'];
-
-        if (!domain)
-            throw new Error('initTranslations() was called without providing a valid domain');
+        domain ||= this.metadata['gettext-domain'] ?? this.uuid;
 
         // Expect USER extensions to have a locale/ subfolder, otherwise assume a
         // SYSTEM extension that has been installed in the same prefix as the shell